package com.yxx.service;


   import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yxx.entity.User;
import com.yxx.entityModel.vo.Result.PageResult;
   import com.yxx.entityModel.vo.query.OnlineUserQuery;
   import com.yxx.entityModel.vo.query.UserQuery;
   import com.yxx.entityModel.vo.request.DisableRequest;
   import com.yxx.entityModel.vo.request.EmailRequest;
import com.yxx.entityModel.vo.request.PasswordRequest;
import com.yxx.entityModel.vo.request.UserRoleRequest;
import com.yxx.entityModel.vo.response.*;
import com.yxx.mapper.UserMapper;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author yuxiangxun
 * @date 2025/1/21
 * @apiNote
 */
public interface UserService {
    /**
     * 获取后台登录用户信息
     * @return
     */
    UserBackInfoResponse getUserBackInfo();

    /**
     * 获取登录用户菜单
     * @return
     */
    List<RouterResponse> getUserMenu();

    /**
     * 修改管理员密码
     * @param password
     */
    void updateAdminPassword(PasswordRequest password);

    /**
     * 获取登录用户信息
     * @return
     */
    UserInfoResponse getUserInfo();

    /**
     * 修改用户邮箱
     * @param emailRequest
     */
    void updateUserEmail(EmailRequest emailRequest);

    /**
     * 修改用户头像
     * @param file
     * @return
     */
    String updateUerAvatar(MultipartFile file);

    /**
     * 查看看用户角色选项列表
     * @return
     */
    List<UserRoleResponse> userRoleDTOList();

    /**
     * 查看后台用户列表（分页查询）
     * @param userQuery
     * @return
     */
    PageResult<UserBackResponse> userBackListVOList(UserQuery userQuery);

    /**
     * 修改用户信息
     */
    void updateUser(UserRoleRequest userRoleRequest);

    /**
     * 修改用户状态
     * @param disableRequest
     */
    void updateUserStatus(DisableRequest disableRequest);

    /**
     * 查看在线用户列表（分页查询）
     * @param onlineUserQuery
     * @return
     */
    PageResult<OnlineUserResponse> onlineUserList(OnlineUserQuery onlineUserQuery);

    /**
     * 下线用户
     * @param token
     */
    void kickOutUser(String token);
}
